package com.cloudbroker.bcs.platform.dav.middle.extservice.sms;

import com.alibaba.fastjson.JSONArray;
import com.cloudbroker.bcs.platform.dav.common.constant.SmsPriority;

/**
 * Created by xuyn15828 on 2016/3/15.
 */
public interface SMSExtService {

    /**
     * 发送短信
     *
     * @param mobile 收信人手机号码
     * @param content 短信内容
     *
     * @return String 短信编号  成功返回短信编号,模拟返回空串,失败返回null
     * */
    public String sendMessage(String mobile, String content);

    /**
     * 使用优先级进行短信发送
     * @param mobile 收信人手机号码
     * @param content 短信内容
     * @param priority 短信发送优先级
     *
     * @return String 短信编号  成功返回短信编号,模拟返回空串,失败返回null
     * */
    public String sendMessage(String mobile, String content, SmsPriority priority);

    /**
     * 批量短信发送,最多两百个
     *
     * @param content 短信内容
     * @param mobiles 手机号码数组
     *
     * @return JsonArray 短信编号数组  成功返回短信编号,模拟返回空JsonArray,失败返回null
     * */
    public JSONArray sendMessage(String content, String... mobiles);

    /**
     * 批量短信发送,最多两百个
     *
     * @param content 短信内容
     * @param priority 短信发送优先级
     * @param mobiles 手机号码数组
     *
     * @return JsonArray 短信编号数组  成功返回短信编号,模拟返回空JsonArray,失败返回null
     * */
    public JSONArray sendMessage(String content, SmsPriority priority, String... mobiles);

    /**
     * 发送邮件
     * @param emailTo 邮件收件人
     * @param emailContent 文件内容
     *
     * @return 发送邮件反馈  成功或模拟返回true,失败返回false
     * */
    public boolean sendMail(String emailTo, String emailContent);

    /**
     * 发送邮件
     * @param emailTo 邮件收件人
     * @param emailContent 文件内容
     * @param priority 邮件发送优先级
     *
     * @return boolean 发送邮件反馈  成功或模拟返回true,失败返回false
     * */
    public boolean sendMail(String emailTo, String emailContent, SmsPriority priority);

    /**
     * 发送邮件
     * @param emailTo 邮件收件人
     * @param emailSubject 邮件主题
     * @param emailContent 文件内容
     *
     * @return boolean 发送邮件反馈  成功或模拟返回true,失败返回false
     * */
    public boolean sendMail(String emailTo, String emailSubject, String emailContent);

    /**
     * 发送邮件
     * @param emailTo 邮件收件人
     * @param emailSubject 邮件主题
     * @param emailContent 文件内容
     * @param priority 邮件发送优先级
     *
     * @return boolean 发送邮件反馈  成功或模拟返回true,失败返回false
     * */
    public boolean sendMail(String emailTo, String emailSubject, String emailContent, SmsPriority priority);

    /**
     * 发送邮件
     *
     * @param emailTo 邮件收件人
     * @param emailCc 邮件抄送人
     * @param emailBcc 邮件密送人
     * @param emailSubject 邮件主题
     * @param emailContent 邮件内容
     *
     * @return boolean 发送邮件反馈  成功或模拟返回true,失败返回false
     * */
    public boolean sendMail(String emailTo, String emailCc,
                            String emailBcc, String emailSubject,
                            String emailContent);

    /**
     * 发送邮件
     *
     * @param emailTo 邮件收件人
     * @param emailCc 邮件抄送人
     * @param emailBcc 邮件密送人
     * @param emailSubject 邮件主题
     * @param emailContent 邮件内容
     * @param priority 邮件发送优先级
     *
     * @return boolean 发送邮件反馈  成功或模拟返回true,失败返回false
     * */
    public boolean sendMail(String emailTo, String emailCc,
                            String emailBcc, String emailSubject,
                            String emailContent, SmsPriority priority);
}
